package com.android.hedgehog.framework;

public interface Graphics {
	public static enum PixmapFormat {
		ARGB8888, ARGB4444, RGB565
	}

	public Pixmap newPixmap(String fileName, PixmapFormat format);

	public void clear(int color);

	public void drawPixel(int x, int y, int color);

	/**
	 * This method was manually added. T
	 * 
	 * @param text
	 *            a String that you want to be displayed to the Screen
	 * @param x
	 *            X coordinate
	 * @param y
	 *            Y coordinate
	 * @param textSize
	 *            size of Text
	 * @param color
	 *            color of text (for example: Color.WHITE)
	 */
	public void drawText(String text, int x, int y, int textSize, int color);

	/**
	 * @param text
	 * @param x
	 * @param y
	 * @param textSize
	 * @param textStyle
	 *            SmallFonts: (2)
	 * @param color
	 */
	
	public void drawHiddenText(String text, int x, int y, int alpha, int textSize, int color);
	
	public void drawSpecialText(String text, float x, float y, int textSize, int textStyle, int color);

	public void drawLine(float x, float y, float x2, float y2, int color);

	public void drawUniversalLine(float x, float y, float x2, float y2, float strokeWidth, int color);

	public void drawArrow(float x, float y, float x2, float y2, int color);

	/**
	 * Draws a rectangle that is color filled
	 * 
	 * @param x
	 * @param y
	 * @param width
	 * @param height
	 * @param color
	 */
	public void drawRect(int x, int y, int width, int height, int color);

	/**
	 * Draws a outline of a rectangle that is not color filled
	 * 
	 * @param x
	 * @param y
	 * @param width
	 * @param height
	 * @param color
	 */
	public void drawRect2(int x, int y, int width, int height, int color);

	/**
	 * Draws filled rectangle of your color choice
	 * 
	 * @param x
	 * @param y
	 * @param width
	 * @param height
	 * @param A
	 * @param R
	 * @param G
	 * @param B
	 */
	public void drawRect3(int x, int y, int width, int height, int A, int R, int G, int B);

	public void drawUniversalRect(int x, int y, int width, int height, boolean oval, boolean fillRect,
			float strokeWidth, int alpha, int color);

	public void drawGradient(int x, int y, int width, int height, int color1, int color2);

	/**
	 * @param text
	 * @param font
	 *            0:default, 1:bold, 2:smallfont
	 * @param center
	 *            true=center, false=left
	 * @param x
	 * @param y
	 * @param size
	 * @param color
	 * @param alpha
	 *            255:visible, 0:invisible
	 */
	public void drawUniversalText(String text, int font, boolean center, float x, float y, int size,
			int alpha, int color);

	/**
	 * This method takes a pixmap and draws a portion of it onto the screen at
	 * the x & y coordinates. [In order for a picture to be displayed onto the
	 * screen, a corresponding .png file must be stored in the "assets" folder;
	 * the pixmap for it should be defined in the "Assets" class and loaded in
	 * from "LoadingScreen"]
	 * 
	 * @param pixmap
	 *            the image to be displayed
	 * @param x
	 *            X coordinate
	 * @param y
	 *            Y coordinate
	 * @param srcX
	 *            the starting X coordinate of the image on the .png file
	 * @param srcY
	 *            the starting Y coordinate of the image on the .png file
	 * @param srcWidth
	 *            the width of the image
	 * @param srcHeight
	 *            the height of the image
	 */
	public void drawPixmap(Pixmap pixmap, int x, int y, int srcX, int srcY, int srcWidth, int srcHeight);

	public void drawFlippedPixmap(Pixmap pixmap, int x, int y, int srcX, int srcY, int srcWidth, int srcHeight);

	/**
	 * This method takes a pixmap and draws it completely onto the screen at the
	 * specified x & y coordinates. [In order for a picture to be displayed onto
	 * the screen, a corresponding .png file must be stored in the "assets"
	 * folder; the pixmap for it should be defined in the "Assets" class and
	 * loaded in from "LoadingScreen"]
	 * 
	 * @param pixmap
	 *            the image that is displayed
	 * @param x
	 *            X coordinate
	 * @param y
	 *            Y coordinate
	 */
	public void drawPixmap(Pixmap pixmap, int x, int y);

	public void drawBackground(int color);

	public int getWidth();

	public int getHeight();

}
